package thinkInJava;

import java.util.Date;

/**
 * @author cuiH
 * Date: 13-10-29
 */
public class StringExample {
    public static void main(String[] args) {
        String string1 = "abc";
        String string2 = string1.toUpperCase();
        System.out.println("string1:" + string1 + "  string2:" + string2);
        /**
         * 结果：string1:abc  string2:ABC
         * 说明，修改String类型，相当于，新建一个全新的string，而保留原来的String
         */

        String string3 = "abckdjafkajaslkfjlasfasfasfds";
        long beginTime = new Date().getTime();
        StringBuilder string4 = new StringBuilder();
        for (int i = 0; i < 10000; i++) {
            string4.append(string3);
        }
        long innerTime = new Date().getTime();
        String string5 = "abckdjafkajaslkfjlasfasfasfds";
        String string6 = string5;
        System.out.println("append方式运行的时间" + (innerTime - beginTime) + "ms");
        for (int i = 0; i < 10000; i++) {
            string6 += string5;
        }
        long lastTime = new Date().getTime();
        System.out.println("直接相加运行的时间" + (lastTime - innerTime) + "ms");
        /**
         * 运行结果：
         * append方式运行的时间7ms
         * 直接相加运行的时间31282ms
         * 通过分析，因此StringBuilder在连接方面具有较大的优越性，但是由于其是线程安全，所以其开销也相对较大
         */

        int x = 5;
        double y = 3.33333;
        System.out.println("[ x:" + x + ",y:" + y + "]");
        System.out.format("[%d %f]\n",x,y);
        System.out.printf("[%d %f]\n",x,y);
        /**
         * 格式化输出。与C语言类似的语法输出
         */
    }
}
